package org.wanho;

/**
 * Author：汤小洋
 * Date：2023-05-08 13:42
 * Description：<描述>
 */
public class Test03_Lambda表达式 {

    public static void main(String[] args) {
        Inter1 i = new Inter1() {
            @Override
            public int f1() {
                return 5;
            }
        };
        System.out.println(i.f1());

        /**
         * 使用Lambda表达式，来简化匿名内部类的写法
         */
        // 1.方法无参，有返回值
        Inter1 i1 = () -> 5;
        System.out.println(i1.f1());

        // 2.方法有一个参数，有返回值
        Inner2 i2 = m -> m*2;
        System.out.println(i2.f2(3));

        // 3.方法有两个参数，有返回值
        Inner3 i3 = (m,n) -> m+n;
        System.out.println(i3.f3(2,6));

        // 4.方法有一个参数，无返回值
        Inner4 i4 = (String m) -> System.out.println(m);
        i4.f4("tom");

        // 5.方法有两个参数，无返回值
        Inner5 i5 = (m,n) -> {
            int sum =  m + n;
            System.out.println(sum);
        };
        i5.f5(3,6);

    }
}


/**
 * 函数式接口：有且只有一个抽象方法
 */
interface Inter1{
    int f1();
}

interface Inner2{
    int f2(int m);
}

interface Inner3{
    int f3(int m, int n);
}

interface  Inner4{
    void f4(String m);
}

interface  Inner5{
    void f5(int x,int y);
}

